extends Sprite2D

var maxLen = 70

var ondraging = -1

func _input(event) -> void:
	# 手指摁压时的操作
	if event is InputEventScreenDrag or (event is InputEventScreenTouch and event.is_pressed()):
		# 判断是否在触摸区域,即触摸位置与原点位置距离小于70，在触摸区域才进行移动按钮
		var mouse_pos = (event.position - self.global_position).length() 
		# 当从触摸区域移动到区域外时，会造成按钮不移动，需要进行判断触摸是否还是当前按压的手指
		if mouse_pos <= maxLen or event.get_index() == ondraging:
			# 获取当前的点击索引，防止是其他手指进行的点击干扰，第一次点击为0，第二根手指点击为1
			ondraging = event.get_index()
			$point.set_global_position(event.position)
			# 如果移动的距离大于maxLen，即超出区域范围,将按钮显示在边界点，不让它出去
			if $point.position.length() > maxLen:
				# 设置位置为区域边界点
				$point.set_position($point.position.normalized() * maxLen) 
	# 手指离开时的操作			
	if event is InputEventScreenTouch and !event.is_pressed():
		# 是当前点击的手指松开才进行归为
		if event.get_index() == ondraging:
			# 设置原点
			set_center()
			# 手指标记重置
			ondraging = -1

func set_center():
	# 这里直接设置为原点，不太好看，下面设置为缓慢移动
	#$point.position = Vector2.ZERO
	# 设置缓慢移动
	var tween = get_tree().create_tween()
	tween.tween_property($point,"position",Vector2(0,0),0.2).set_trans(Tween.TRANS_LINEAR)

# 获取当前移动方向	
func get_now_pos():
	return $point.position.normalized()
